Особенности использования связей по родителю и текущему элементу в табличном поле

Поведение двух связанных табличных полей, одно из которых отображает данные в виде дерева, а другое – в виде списка, имеет ряд особенностей.

Например, имеется форма, содержащая два табличных поля, которые отображают справочник Номенклатура. Первое табличное поле ("СправочникДерево") отображает его в виде дерева, а второе ("СправочникСписок") - в виде иерархического списка. Для табличного поля "СправочникДерево" установлена связь по текущему элементу с табличным полем "СправочникСписок". В качестве значения данной связи установлено значение поля Родитель свойства ТекущиеДанные табличного поля "СправочникСписок". У табличного поля "СправочникСписок" установлена связь по родителю с табличным полем "СправочникДерево". В качестве значения данной связи установлено событие ПриАктивизацииСтроки().

Особенность отработки связей в данном случае заключается в том, что они будут правильно работать только для тех элементов справочника, которые имеют подчиненные элементы.

Если в табличном поле "СправочникДерево" выбрать элемент, не имеющий подчиненных элементов, то в табличном поле "СправочникСписок" будут отображены корневые элемент данного справочника, а затем и в табличном поле "СправочникДерево" текущей строкой станет корневой элемент. Аналогичное поведение будет наблюдаться и в том случае, если в табличном поле "СправочникСписок" установить группу, не имеющую подчиненных элементов.

Такое поведение табличных полей объясняется тем, что при активизации строки в табличном поле "СправочникДерево" отрабатывает связь по родителю для табличного поля "СправочникСписок", т.е. изменяется свойство ТекущийРодитель данного табличного поля. Если родитель не имеет подчиненных элементов, то свойствам ТекущаяСтрока и ТекущиеДанные этого табличного поля будет присвоено значение Неопределено. Затем будет вызван обработчик события ПриАктивизацииСтроки и отработана связь по текущему элементу для табличного поля "СправочникДерево". Так как свойство ТекущиеДанные табличного поля "СправочникСписок" имеет значение Неопределено, то в табличном поле "СправочникДерево" будет установлена новая текущая строка - корневой элемент списка. Поскольку текущая строка была изменена, у табличного поля "СправочникСписок" еще раз будет отработана связь по родителю и значение свойства ТекущийРодитель будет установлено в Неопределено. Таким образом, это табличное поле будет так же отображать корневые элементы справочника Номенклатура.

Чтобы избежать подобного поведения, необходимо использовать другое значение связи по текущему элементу для табличного поля "СправочникДерево". Вместо поля Родитель свойства ТекущиеДанные следует установить событие ПриСменеТекущегоРодителя табличного поля "СправочникСписок".